import request from '../utils/request';
import type { CartItem, AddToCartParams, CartListResponse } from './types';

/**
 * 购物车相关接口
 */
export default {
  /**
   * 获取购物车列表
   */
  getCartList() {
    return request.get<CartListResponse>('/api/cart/list');
  },

  /**
   * 添加商品到购物车
   * @param data 添加参数
   */
  addToCart(data: AddToCartParams) {
    return request.post('/api/cart/add', data);
  },

  /**
   * 更新购物车商品数量
   * @param id 购物车ID
   * @param quantity 数量
   */
  updateCartQuantity(id: string | number, quantity: number) {
    return request.put(`/api/cart/${id}/quantity`, { quantity });
  },

  /**
   * 删除购物车商品
   * @param ids 购物车ID数组
   */
  removeFromCart(ids: (string | number)[]) {
    return request.delete('/api/cart/remove', { ids: ids.join(',') });
  },

  /**
   * 清空购物车
   */
  clearCart() {
    return request.delete('/api/cart/clear');
  },

  /**
   * 选择/取消选择购物车商品
   * @param ids 购物车ID数组
   * @param selected 是否选中
   */
  selectCartItems(ids: (string | number)[], selected: boolean) {
    return request.put('/api/cart/select', {
      ids: ids.join(','),
      selected
    });
  },

  /**
   * 全选/取消全选购物车商品
   * @param selected 是否全选
   */
  selectAllCartItems(selected: boolean) {
    return request.put('/api/cart/select-all', { selected });
  },

  /**
   * 获取购物车商品数量
   */
  getCartCount() {
    return request.get('/api/cart/count');
  },

  /**
   * 获取购物车商品总价
   */
  getCartAmount() {
    return request.get('/api/cart/amount');
  },
};